import { Util, Verify } from '@/ibiz-core/utils';
import { EntityLogicBase } from '@/ibiz-core';


/**
 * 根据产品获取单价处理逻辑基类
 *
 * @export
 * @class getproductLogicBase
 * @extends {EntityLogicBase}
 */
export class getproductLogicBase extends EntityLogicBase {

    /**
     * 名称
     * 
     * @protected
     * @memberof getproductLogicBase
     */
    protected name:string ="getproduct";

    /**
     * 唯一标识
     * 
     * @protected
     * @memberof getproductLogicBase
     */
    protected id:string = "e54fa2bf321260615fc6fec574613892";

    /**
     * 默认参数名称
     * 
     * @protected
     * @memberof getproductLogicBase
     */
    protected defaultParamName:string = "Default";

    /**
     * 计算1节点结果
     * 
     * @param params 传入上下文参数
     * @returns {boolean}
     * @memberof getproductLogicBase
     */
    public compute1Cond(params: any): boolean {
        if (Verify.testCond(params.product_productid, 'ISNOTNULL', '')) {
           return true;
        }
        return false;
    }

    /**
     * 执行逻辑
     * 
     * @param context 应用上下文
     * @param params 传入参数
     * @returns {Promise<any>}
     * @memberof getproductLogicBase
     */
    public onExecute(context: any, params: any): Promise<any> {
        return this.executeBegin(context, params);
    }


    /**
     * 开始
     * 
     * @protected
     * @param params 传入参数
     * @returns {Promise<any>}
     * @memberof getproductLogicBase
     */
    protected async executeBegin(context: any, params: any): Promise<any> {
        //开始节点
        return this.executePREPAREPARAM1(context, params);
    }

    /**
     * 获取选择的费用类别id
     * 
     * @protected
     * @param context 应用上下文
     * @param params 传入参数
     * @returns {Promise<any>}
     * @memberof getproductLogicBase
     */
    protected async executePREPAREPARAM1(context: any, params: any): Promise<any> {
        // 准备参数节点
        Object.assign(params, { product_product: params.product_productid });
        if (this.compute1Cond(params)) {
            return this.executeDEACTION1(context, params);
        }
    }

    /**
     * 查询费用类别信息
     * 
     * @protected
     * @param context 应用上下文
     * @param params 传入参数
     * @returns {Promise<any>}
     * @memberof getproductLogicBase
     */
    protected async executeDEACTION1(context: any, params: any): Promise<any> {
        // 行为处理节点
    }

    /**
     * 填充类别标准单价
     * 
     * @protected
     * @param context 应用上下文
     * @param params 传入参数
     * @returns {Promise<any>}
     * @memberof getproductLogicBase
     */
    protected async executePREPAREPARAM2(context: any, params: any): Promise<any> {
        // 准备参数节点
        Object.assign(params, { unit_amount: params.standard_price });
        if (this.compute1Cond(params)) {
            return this.executeEND1(context, params);
        }
    }

    /**
     * 结束
     * 
     * @protected
     * @param context 应用上下文
     * @param params 传入参数
     * @returns {Promise<any>}
     * @memberof getproductLogicBase
     */
    protected async executeEND1(context: any, params: any): Promise<any> {
        throw new Error('END暂未支持');
    }

}